AMD Zen 2 – szczegóły architektury procesorów Ryzen
Spis treści:
Premiera procesorów AMD Ryzen z serii 3000 już za nami. Do sprzedaży trafiły już wyczekiwane nowości, które powstały w oparciu o ulepszoną i zmodyfikowaną architekturę Zen – Zen 2. Przyjrzyjmy się najważniejszym zmianom, jakie wprowadza nowa architektura względem jednostek poprzednich generacji, które bazowały na architekturze Zen.
Polecane procesory AMD
Pomimo licznych udoskonaleń, rdzenie procesorów z architekturą Zen pozostają zgodne z architekturą x86 i wykonują działania według określonego schematu: instrukcje pobierane są z pamięci, a następnie dekodowane oraz przetwarzane do mikrooperacji, które są wykonywane przez jednostki wykonawcze. Wyniki są ponownie zapisywane w pamięci. W poniższym tekście wyjaśnimy, jak poszczególne etapy i działania przebiegają w przypadku procesorów z architekturą Zen 2.
Pobieranie instrukcji AMD Zen 2 i przewidywanie skoków
Początkowy etap pobierania instrukcji zasadniczo nie odbiega od tego, do czego przyzwyczaiła użytkowników architektura Zen. Małym modyfikacjom uległy jedynie bufory we front-endzie. Układ przewidywania skoków został, z kolei, rozbudowany. Największe zmiany, jakie można zaobserwować, w porównaniu do architektury Zen, dotyczą pamięci podręcznej L1.
- Architektura Zen 2 umożliwia pobieranie maksymalnie 32 bajtów kodu w cyklu zegara. Bardziej zorientowani w temacie mogą zarzucić brak zmiany w tym zakresie, bo teoretycznie architektura Zen miała identyczne ograniczenie, ale w praktyce rzadko kiedy uzyskać można było wynik powyżej 16 bajtów na cykl.
- Wspomniana reorganizacja pamięci podręcznej L1 oraz realne umożliwienie pobierania do 32 bajtów kodu ma niebagatelny wpływ na wyższą przepustowość na tym etapie działania.
Spore zmiany zaszły również w zakresie układu przewidywania skoków. Układ ten umożliwia przyspieszenie pobierania i wykonywania kolejnych instrukcji, co przyspiesza pracę procesora. Jak sama nazwa wskazuje, układ ten potrafi z ogromną dozą prawdopodobieństwa wytypować skoki, ich kierunki i pobrać adekwatne instrukcje z wyprzedzeniem. We współczesnych procesorach układ ten ma skuteczność przekraczającą 95%, a w przypadku architektury Zen 2 można liczyć na jeszcze lepsze funkcjonowanie tego układu, a wszystko to za sprawą:
- Zastosowania podwójnego układu przewidywania skoków.
- Układ perceptronowy wykorzystywany jest do przewidywania, czy skok nastąpi w krótkich pętlach, a także do przewidywania skoków prowadzących do instrukcji, które już znajdują się w pamięci podręcznej L1.
- Układ TAGE wykorzystywany jest do przechowywania tabel z historiami uprzednio wykonanych skoków. To rozwiązanie ułatwia śledzenie i weryfikowanie wszystkich rozgałęzień. Ten układ jest szczególnie efektywny dla długich sekwencji, ale za to potrzebuje większych zasobów pamięci ze względu na specyfikę gromadzonych danych.
Podwójny układ przewidywania skoków powoduje, że oba rozwiązania wzajemnie się uzupełniają. W związku z wprowadzonymi zmianami względem architektury Zen (która korzystała wyłącznie z układu perceptronowego), zwiększono pojemność buforów BTB (L1 BTB dla Zen 2 to 512 wpisów, a dla Zen było to 256 wpisów, L2 BTB dla Zen 2 to 7000 wpisów, a dla Zen było to 4096 wpisów) oraz ITA (1024 wpisy dla Zen 2, a dla Zen było to 512 wpisów). Bufor BTB służy do przechowywania adresów już wykonanych skoków, a bufor ITA służy do przechowywania adresów skoków, które mogą mieć dwa cele lub więcej celów.
Dekodowanie instrukcji AMD Zen 2
W architekturze x86 wszystkie instrukcje, jeszcze przed wykonaniem, muszą zostać zdekodowane. Dekodowanie to, innymi słowy, przetłumaczenie instrukcji z jej skróconej postaci i podzielenie jej na operacje oraz operandy. Jak już zostało wspomniane, architektura Zen 2 umożliwia pobranie 32 bitów danych na cykl zegara i zdekodowanie maksymalnie czterech instrukcji w cyklu.
Jak wiadomo, instrukcje przetwarzane są na jedną lub dwie operacje, które trafiają do pamięci – w przypadku architektury Zen 2 pamięć ta jest dwukrotnie większa niż w architekturze Zen i pomieści 4096 operacji i jest to bardzo duża zmiana na plus, gdyż przyspiesza dekodowanie i pozwala na oszczędność energii (zdekodowana instrukcja jest pobierana z pamięci, a w tym czasie dekoder może zostać zatrzymany lub wyłączony).
Operacje ogólne i arytmetyka stałoprzecinkowa w AMD Zen 2
Front-end procesora o architekturze Zen 2 może przekazać do wykonania 6 mikrooperacji do części stałoprzecinkowej i 4 do wektorowej. Maksymalnie jest to więc 10 mikrooperacji na cykl – tak samo, jak w przypadku architektury Zen. Różnic jednak nie brakuje także w tym zakresie, a najważniejsze z nich to:
- Dodanie trzeciej jednostki generowania adresów (AGU) w części, która odpowiada za operacje stałoprzecinkowe.
- Powiększenie puli rejestrów do przemianowania do 180 (w Zen było ich 168) oraz dołożono tu dodatkową jednostkę wykonawczą (jest ich 7 zamiast 6, jak w architekturze Zen).
- Powiększono i zmodyfikowano kolejki przed jednostkami arytmetycznymi – w Zen 2 mieszczą 16 mikrooperacji. Kolejki przed jednostkami generowania adresów połączono i zamiast dwóch kolejek po 14 mikrooperacji zastosowano jedną, która pomieści ich 28.
- W architekturze Zen 2 można pomieścić w kolejkach więcej instrukcji, a do wykonania można wybierać je spośród ostatnich 224, a nie 192, jak to było w przypadku architektury Zen.
Obliczenia wektorowe w AMD Zen 2
W porównaniu z architekturą Zen, część rdzenia odpowiedzialna za obliczenia wektorowe została wyraźnie zmodyfikowana w architekturze Zen 2, a konkretniej:
- Dwukrotnie rozszerzono ścieżki danych i rejestry – w Zen 2 jest to 256 bitów zamiast 128, jak było w architekturze Zen, co ma niebagatelny wpływ na wykonywanie instrukcji. Przykładowo: procesor z architekturą Zen 2 może wykonać instrukcję AVX2 (256-bitowe rejestry) jako jedną mikrooperację. Procesor Zen musiałby podzielić tę instrukcję na dwie mikrooperacje do wykonania.
- Procesor Zen 2 ma dwukrotnie wyższą przepustowość obliczeniową niż procesor Zen. W procesorze Zen mieliśmy do czynienia z jednym 256-bitowym mnożeniem i jednym 256-bitowym dodawaniem na cykl. W procesorze Zen 2 mogą zajść dwa 256-bitowe mnożenia i dwa 256-bitowe dodawania na cykl.
Kolejną ważną zmianą w architekturze Zen 2 jest zminimalizowanie opóźnień w działaniach związanych z mnożeniem wektorowym liczb zmiennoprzecinkowych – wynik w Zen 2 jest gotowy po trzech cyklach zegara.
Podsystem pamięci podręcznych w AMD Zen 2
Jeśli chodzi o podsystem pamięci podręcznych, to akurat ten element jest zorganizowany w Zen 2 bardzo podobnie do Zen, czyli:
- Każdy z rdzeni posługuje się pamięcią podręczną L1, która jest podzielona na L1l (przechowywanie kodu) oraz L1D (dane).
- Pamięć podręczna L2 nie zmieniła się w porównaniu z architekturą Zen – wciąż ma pojemność 512 kB i jest odrębna dla każdego z rdzeni.
Oczywiście nie obyło się bez zauważalnych zmian:
- W Zen 2 pamięć podręczną L1 pomniejszono z 64 kB do 32 kB, ale za to powiększono pamięć zdekodowanych operacji.
- W Zen 2 pamięć podręczna L1l jest ośmiodrożna, a w Zen była czterodrożna, a to oznacza wzrost efektywności pamięci podręcznej. Ostatecznie 32 kB pamięci ośmiodrożnej okazuje się tak samo wydajne, jak 64 kB pamięci czterodrożnej.
- Podwojono przepustowość pobierania i zapisywania danych z pamięci L1 i do pamięci L1.
- Dołożono trzecią jednostkę AGU (jednostkę generowania adresów), co pozwoliło wyeliminować tak zwane wąskie gardło ograniczające przepustowość w Zen.
- Podwojono także pojemność pamięci L3 z 8 do 16 MB na każde cztery rdzenie.
Warto zwrócić uwagę na pewien fakt – w różnego rodzaju artykułach i materiałach informacyjnych pojawiać może się określenie Game Cache w odniesieniu do procesorów Ryzen. Pamięć ta to zsumowana wartość dostępnych pamięci podręcznych procesora – podawanie jej w ten sposób ma na celu wyłącznie uświadomienie mniej zaznajomionym z tematem, że parametr ten korzystnie wpłynie na wydajność w grach, ale w profesjonalnej specyfikacji zawsze będzie mowa o pamięci L1, L2 i L3 oddzielnie.
Pewną nowością jest także szereg narzędzi pozwalających na programowe zarządzanie pamięcią L3. Mowa o:
- L3 Cache allocation enforcement – umożliwia określenie limitu danych, jakie znajdą się w pamięci L3, a które należą do konkretnego procesu.
- L3 Code-Data Prioritization support – umożliwia ochronę kodu programu przed przerzuceniem go z L3 do pamięci RAM.
- L3 Cache occupancy monitoring – umożliwia zweryfikowanie poziomu wykorzystania pamięci L3 przez konkretny proces.
W Zen 2 pojawiły się także dwie nowe instrukcje do zarządzania pamięcią:
- CLWB – to instrukcja, która była już stosowana w procesorach Intel
- WBINVD
Makroarchitektura AMD Zen 2
Makroarchitektura procesorów Zen 2 wyraźnie różni się od tego, co możemy pamiętać z architektury Zen. Oto najważniejsze informacje na ten temat:
- Procesory Ryzen 3000 posiadają po 2 lub 3 jądra krzemowe w jednej obudowie.
- CCD zawierają dwa bloki CCX – w każdym z nich są zaś 4 rdzenie Zen 2 i 16 MB pamięci L3. CCD są produkowane w 7 nm procesie technologicznym przez firmę TSMC. Znajduje się w nich także szerokie łącze umożliwiające przesyłanie danych do kolejnego jądra.
Kolejną istotną informacją o makroarchitekturze Zen 2 jest fakt, że w jądrze cIOD (coherent I/O Die) znajdziemy nie tylko kontroler pamięci, ale też kontrolery zewnętrznych interfejsów:
- Dwukanałowy kontroler pamięci DDR4.
- PSP – procesor bezpieczeństwa.
- Kontrolery PCI-e 4.0. Łączna liczba linii to 24, z czego 20 jest do dyspozycji użytkownika, a 4 wykorzystywane są do komunikacji z chipsetem.
- Generator sygnałów zegarowych.
- Kontroler zasilania oraz taktowania – SMU.
- Kontrolery pobocznych interfejsów.
- GMI2 x 2 – implementacja protokołu Infinity Fabric.
- Kontroler USB 3.2.
Jądra cIOD produkowane są w 12 nm procesie technologicznym (dokładnie tym samym, co procesory Ryzen poprzedniej generacji).
Jak widać, mikroarchitektura Zen 2 zasadniczo różni się od Zen. Wszelkie usprawnienia były o tyle łatwiejsze do zastosowania, że 7 nm proces technologiczny umożliwia zmieszczenie większej liczby tranzystorów bez zwiększania powierzchni, jaką zajmują. Zyskała na tym powiększona pamięć L3, powiększone bufory i część do obliczeń wektorowych. Poprawiono przewidywalność skoków i przepustowość pobierania danych z pamięci podręcznej. Ważną nowością jest też wspieranie najnowszych i najszybszych (w chwili projektowania architektury Zen 2) interfejsów, jak PCI-e 4.0 czy też pamięć RAM DDR4 o taktowaniu 3200 MHz. To wszystko powoduje, że procesory Zen 2 zyskały wyższą wydajność i zauważalnie lepsze parametry do działania.
Znajdziesz w Morele
Płyty główne - Karty graficzne - Zasilacze SeaSonic - Procesory Intel - AMD Ryzen 5
Komentarze (0)